﻿using Microsoft.VisualStudio.TestTools.UnitTesting;
using Moq;
using MVVM_CAD.Model;
using MVVM_CAD.ViewModel;

namespace WPF_CAD.Test.ViewModel
{
    /// <summary>
    /// Se buscara probar El viewmodel FigureActionViewModel, en la vista (FigureAction) que se va a desplegar
    /// cuando se seleccione una figura, se listaran una serie de acciones [rotar, mover, escalar], cuyas acciones seran
    /// gestionadas por la FigureActionViewModel mediante comandos.
    /// </summary>
    [TestClass]
    public class FigureActionViewModelFixture
    {
        [TestMethod]
        public void CreationFigureActionViewModel()
        {
            //Act
            var figureActionViewModel = new FigureActionViewModel(null);
            //Assert
            Assert.IsNotNull(figureActionViewModel);
        }

        /// <summary>
        /// FigureAction va a aplicar las acciones a una figura, esa figura va a ser la seleccionada.
        /// Que quiero probar? Que pueda setear la figura a aplicar acciones.
        /// Como lo voy a probar? Creo una Figura y la agrego al VM, luego compruebo que la figura sea la que cree y 
        /// la propiedad en el VM no sea null.
        /// </summary>
        [TestMethod]
        public void SetFigureToApplayActions()
        {
            //Arrange
            var figure = new Mock<IFigure>();
            //Act
            var figureActionVm = new FigureActionViewModel(figure.Object);
            //Assert
            Assert.IsNotNull(figureActionVm.SelectedFigure);
            Assert.AreEqual(figure.Object, figureActionVm.SelectedFigure);
            figure.Verify();

        }
    }
}
